{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "60ea3c2a",
   "metadata": {
    "id": "60ea3c2a"
   },
   "source": [
    "# Step 2: Training SAWYER's Reward Model using Human Preferences"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d709bec4",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "d709bec4",
    "outputId": "e6bfec50-ec20-4fa4-b72c-aa3084624d15"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using device: cuda\n",
      "\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "from random import sample\n",
    "from tqdm import tqdm\n",
    "\n",
    "import torch\n",
    "import numpy as np\n",
    "import torch.nn as nn\n",
    "from dataclasses import dataclass, field\n",
    "from typing import Any, Dict, List, Optional, Union\n",
    "from datasets import load_dataset\n",
    "from transformers import (\n",
    "    AutoConfig,\n",
    "    AutoModelForSequenceClassification,\n",
    "    AutoTokenizer,\n",
    "    PreTrainedTokenizerBase,\n",
    "    Trainer,\n",
    "    TrainingArguments,\n",
    "    set_seed,\n",
    ")\n",
    "from transformers.utils import PaddingStrategy\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "print('Using device:', device)\n",
    "print()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c5e1ecf4",
   "metadata": {
    "id": "c5e1ecf4"
   },
   "source": [
    "comparison_data_v2.json ranked responses from LLMs including:\n",
    "\n",
    "1. GPT-4\n",
    "2. GPT-3.5\n",
    "3. OPT-IML\n",
    "4. DaVinci (InstructGPT)\n",
    "\n",
    "by asking GPT-4 to rate the quality.\n",
    "\n",
    "Each data element has keys:\n",
    "\n",
    "- user_input: str, prompts used for quering LLMs.\n",
    "- responses_and_scores: list[str], list of\n",
    "    - response: the response from the LLM\n",
    "    - source: the LLM that generated the response\n",
    "    - score: Score given to the response (from GPT-4)\n",
    "    \n",
    "    \n",
    "See more info [here](https://github.com/Instruction-Tuning-with-GPT-4/GPT-4-LLM/tree/main#how-good-is-the-data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ruazpRvP3B_u",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "ruazpRvP3B_u",
    "outputId": "2d597d5a-5e78-4954-9253-faf377fb1371"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Token will not been saved to git credential helper. Pass `add_to_git_credential=True` if you want to set the git credential as well.\n",
      "Token is valid (permission: write).\n",
      "Your token has been saved to /root/.cache/huggingface/token\n",
      "Login successful\n"
     ]
    }
   ],
   "source": [
    "import huggingface_hub, os\n",
    "from google.colab import userdata\n",
    "\n",
    "huggingface_hub.login(token=userdata.get('HF_TOKEN'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "okg8ttSyd0Gl",
   "metadata": {
    "id": "okg8ttSyd0Gl"
   },
   "outputs": [],
   "source": [
    "import pandas\n",
    "\n",
    "comparison_data = pandas.read_json('https://raw.githubusercontent.com/sinanuozdemir/quick-start-guide-to-llms/main/data/comparison_data_v2.json')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2ae5bcb4",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "2ae5bcb4",
    "outputId": "5fd83e58-c928-4f80-fde6-aa4ad78b4fb8"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_input              Below is an instruction that describes a task....\n",
       "responses_and_scores    [{'response': '1.Eat a balanced diet and make ...\n",
       "Name: 0, dtype: object"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comparison_data.iloc[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7d5afd47",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 206
    },
    "id": "7d5afd47",
    "outputId": "0f022024-4e27-4318-c438-07e7ca5ae0c0"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "repr_error": "unhashable type: 'list'",
       "type": "dataframe",
       "variable_name": "comparison_data"
      },
      "text/html": [
       "\n",
       "  <div id=\"df-d122c4da-1d71-45d8-b9d4-c3db52e548b9\" class=\"colab-df-container\">\n",
       "    <div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_input</th>\n",
       "      <th>responses_and_scores</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Below is an instruction that describes a task....</td>\n",
       "      <td>[{'response': '1.Eat a balanced diet and make ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Below is an instruction that describes a task....</td>\n",
       "      <td>[{'response': 'The three primary colors are re...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Below is an instruction that describes a task....</td>\n",
       "      <td>[{'response': 'An atom is made up of a nucleus...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Below is an instruction that describes a task....</td>\n",
       "      <td>[{'response': 'There are a number of ways to r...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Below is an instruction that describes a task....</td>\n",
       "      <td>[{'response': 'I had to make a difficult decis...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>\n",
       "    <div class=\"colab-df-buttons\">\n",
       "\n",
       "  <div class=\"colab-df-container\">\n",
       "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d122c4da-1d71-45d8-b9d4-c3db52e548b9')\"\n",
       "            title=\"Convert this dataframe to an interactive table.\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
       "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
       "  </svg>\n",
       "    </button>\n",
       "\n",
       "  <style>\n",
       "    .colab-df-container {\n",
       "      display:flex;\n",
       "      gap: 12px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert {\n",
       "      background-color: #E8F0FE;\n",
       "      border: none;\n",
       "      border-radius: 50%;\n",
       "      cursor: pointer;\n",
       "      display: none;\n",
       "      fill: #1967D2;\n",
       "      height: 32px;\n",
       "      padding: 0 0 0 0;\n",
       "      width: 32px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert:hover {\n",
       "      background-color: #E2EBFA;\n",
       "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "      fill: #174EA6;\n",
       "    }\n",
       "\n",
       "    .colab-df-buttons div {\n",
       "      margin-bottom: 4px;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert {\n",
       "      background-color: #3B4455;\n",
       "      fill: #D2E3FC;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert:hover {\n",
       "      background-color: #434B5C;\n",
       "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "      fill: #FFFFFF;\n",
       "    }\n",
       "  </style>\n",
       "\n",
       "    <script>\n",
       "      const buttonEl =\n",
       "        document.querySelector('#df-d122c4da-1d71-45d8-b9d4-c3db52e548b9 button.colab-df-convert');\n",
       "      buttonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "      async function convertToInteractive(key) {\n",
       "        const element = document.querySelector('#df-d122c4da-1d71-45d8-b9d4-c3db52e548b9');\n",
       "        const dataTable =\n",
       "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
       "                                                    [key], {});\n",
       "        if (!dataTable) return;\n",
       "\n",
       "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
       "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
       "          + ' to learn more about interactive tables.';\n",
       "        element.innerHTML = '';\n",
       "        dataTable['output_type'] = 'display_data';\n",
       "        await google.colab.output.renderOutput(dataTable, element);\n",
       "        const docLink = document.createElement('div');\n",
       "        docLink.innerHTML = docLinkHtml;\n",
       "        element.appendChild(docLink);\n",
       "      }\n",
       "    </script>\n",
       "  </div>\n",
       "\n",
       "\n",
       "<div id=\"df-dc8849d2-d046-462e-b572-8462084cd031\">\n",
       "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-dc8849d2-d046-462e-b572-8462084cd031')\"\n",
       "            title=\"Suggest charts\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "     width=\"24px\">\n",
       "    <g>\n",
       "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
       "    </g>\n",
       "</svg>\n",
       "  </button>\n",
       "\n",
       "<style>\n",
       "  .colab-df-quickchart {\n",
       "      --bg-color: #E8F0FE;\n",
       "      --fill-color: #1967D2;\n",
       "      --hover-bg-color: #E2EBFA;\n",
       "      --hover-fill-color: #174EA6;\n",
       "      --disabled-fill-color: #AAA;\n",
       "      --disabled-bg-color: #DDD;\n",
       "  }\n",
       "\n",
       "  [theme=dark] .colab-df-quickchart {\n",
       "      --bg-color: #3B4455;\n",
       "      --fill-color: #D2E3FC;\n",
       "      --hover-bg-color: #434B5C;\n",
       "      --hover-fill-color: #FFFFFF;\n",
       "      --disabled-bg-color: #3B4455;\n",
       "      --disabled-fill-color: #666;\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart {\n",
       "    background-color: var(--bg-color);\n",
       "    border: none;\n",
       "    border-radius: 50%;\n",
       "    cursor: pointer;\n",
       "    display: none;\n",
       "    fill: var(--fill-color);\n",
       "    height: 32px;\n",
       "    padding: 0;\n",
       "    width: 32px;\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart:hover {\n",
       "    background-color: var(--hover-bg-color);\n",
       "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "    fill: var(--button-hover-fill-color);\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart-complete:disabled,\n",
       "  .colab-df-quickchart-complete:disabled:hover {\n",
       "    background-color: var(--disabled-bg-color);\n",
       "    fill: var(--disabled-fill-color);\n",
       "    box-shadow: none;\n",
       "  }\n",
       "\n",
       "  .colab-df-spinner {\n",
       "    border: 2px solid var(--fill-color);\n",
       "    border-color: transparent;\n",
       "    border-bottom-color: var(--fill-color);\n",
       "    animation:\n",
       "      spin 1s steps(1) infinite;\n",
       "  }\n",
       "\n",
       "  @keyframes spin {\n",
       "    0% {\n",
       "      border-color: transparent;\n",
       "      border-bottom-color: var(--fill-color);\n",
       "      border-left-color: var(--fill-color);\n",
       "    }\n",
       "    20% {\n",
       "      border-color: transparent;\n",
       "      border-left-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "    }\n",
       "    30% {\n",
       "      border-color: transparent;\n",
       "      border-left-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "      border-right-color: var(--fill-color);\n",
       "    }\n",
       "    40% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "    }\n",
       "    60% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "    }\n",
       "    80% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "      border-bottom-color: var(--fill-color);\n",
       "    }\n",
       "    90% {\n",
       "      border-color: transparent;\n",
       "      border-bottom-color: var(--fill-color);\n",
       "    }\n",
       "  }\n",
       "</style>\n",
       "\n",
       "  <script>\n",
       "    async function quickchart(key) {\n",
       "      const quickchartButtonEl =\n",
       "        document.querySelector('#' + key + ' button');\n",
       "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
       "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
       "      try {\n",
       "        const charts = await google.colab.kernel.invokeFunction(\n",
       "            'suggestCharts', [key], {});\n",
       "      } catch (error) {\n",
       "        console.error('Error during call to suggestCharts:', error);\n",
       "      }\n",
       "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
       "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
       "    }\n",
       "    (() => {\n",
       "      let quickchartButtonEl =\n",
       "        document.querySelector('#df-dc8849d2-d046-462e-b572-8462084cd031 button');\n",
       "      quickchartButtonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "    })();\n",
       "  </script>\n",
       "</div>\n",
       "\n",
       "    </div>\n",
       "  </div>\n"
      ],
      "text/plain": [
       "                                          user_input  \\\n",
       "0  Below is an instruction that describes a task....   \n",
       "1  Below is an instruction that describes a task....   \n",
       "2  Below is an instruction that describes a task....   \n",
       "3  Below is an instruction that describes a task....   \n",
       "4  Below is an instruction that describes a task....   \n",
       "\n",
       "                                responses_and_scores  \n",
       "0  [{'response': '1.Eat a balanced diet and make ...  \n",
       "1  [{'response': 'The three primary colors are re...  \n",
       "2  [{'response': 'An atom is made up of a nucleus...  \n",
       "3  [{'response': 'There are a number of ways to r...  \n",
       "4  [{'response': 'I had to make a difficult decis...  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comparison_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "O7hu2gNHGjXT",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "O7hu2gNHGjXT",
    "outputId": "7091dc3a-7986-4a14-f50e-50fcfd6a2712"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n",
      "\n",
      "### Instruction:\n",
      "Give three tips for staying healthy.\n"
     ]
    }
   ],
   "source": [
    "print(comparison_data.iloc[0]['user_input'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "GU1NsmaN_OI1",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "GU1NsmaN_OI1",
    "outputId": "9e9b54fd-6d67-4719-c979-a003cb5a17e0"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'response': '1.Eat a balanced diet and make sure to include plenty of fruits and vegetables. \\n2. Exercise regularly to keep your body active and strong. \\n3. Get enough sleep and maintain a consistent sleep schedule.',\n",
       "  'score': 9.0,\n",
       "  'source': 'text-davinci-003'},\n",
       " {'response': '1. Eat a balanced and nutritious diet: Make sure your meals are inclusive of a variety of fruits and vegetables, lean protein, whole grains, and healthy fats. This helps to provide your body with the essential nutrients to function at its best and can help prevent chronic diseases.\\n\\n2. Engage in regular physical activity: Exercise is crucial for maintaining strong bones, muscles, and cardiovascular health. Aim for at least 150 minutes of moderate aerobic exercise or 75 minutes of vigorous exercise each week.\\n\\n3. Get enough sleep: Getting enough quality sleep is crucial for physical and mental well-being. It helps to regulate mood, improve cognitive function, and supports healthy growth and immune function. Aim for 7-9 hours of sleep each night.',\n",
       "  'score': 9.0,\n",
       "  'source': 'gpt4'},\n",
       " {'response': 'Eat healthy, exercise, and sleep.',\n",
       "  'score': 8.0,\n",
       "  'source': 'icm-1.3b'}]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comparison_data.iloc[0]['responses_and_scores']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b209ecc8",
   "metadata": {
    "id": "b209ecc8"
   },
   "outputs": [],
   "source": [
    "def get_score_tuples(dictionary):\n",
    "    responses = dictionary['responses_and_scores']\n",
    "    tuples = []\n",
    "\n",
    "    for i in range(len(responses)):\n",
    "        for j in range(i + 1, len(responses)):\n",
    "            response_i = responses[i]\n",
    "            response_j = responses[j]\n",
    "            score_i = response_i['score']\n",
    "            score_j = response_j['score']\n",
    "\n",
    "            if (score_i - score_j) > 0:\n",
    "                score_difference = score_i - score_j\n",
    "                tuples.append(((response_i['response'], score_i), (response_j['response'], score_j), score_difference))\n",
    "\n",
    "    return tuples\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "17bbcd28",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "17bbcd28",
    "outputId": "b5c9bee3-ce5a-4564-93c4-5dcb387c6109"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 52001/52001 [00:02<00:00, 18986.86it/s]\n"
     ]
    }
   ],
   "source": [
    "new_examples = []\n",
    "for i, row in tqdm(comparison_data.iterrows(), total=comparison_data.shape[0]):\n",
    "    for pair in get_score_tuples(row):\n",
    "        new_examples.append({\n",
    "            'instruction': row['user_input'].split('### Instruction:\\n')[-1].replace('### Input:\\n', ''),\n",
    "            'text_j': pair[0][0],\n",
    "            'text_k': pair[1][0],\n",
    "            'score_diff': pair[2]\n",
    "        })"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2454e7f1",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "2454e7f1",
    "outputId": "778cd888-950a-44bf-e0fe-37229f0dde60"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "95147"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(new_examples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "60393bf0",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "60393bf0",
    "outputId": "3309abff-70ff-43dd-f949-963217b1e5ee"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'instruction': 'Summarize the essay \"The Value of Games and Sport\"',\n",
       "  'text_j': 'The essay \"The Value of Games and Sport\" explores the benefits that come from engaging in physical activities such as sports and games. It argues that these activities have the potential to foster physical health, cognitive development, and social skills. Moreover, engaging in these activities can be a great source of fun, relaxation, and proper exercise. It is concluded that playing games and participating in sports has the ability to positively influence the mental and physical well-being of individuals.',\n",
       "  'text_k': 'I will summarize the essay \"The Value of Games and Sport\"',\n",
       "  'score_diff': 5.0}]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample(new_examples, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a5d3bc2b",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "a5d3bc2b",
    "outputId": "228f1a7a-629f-4325-c824-db74d20397bc"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatasetDict({\n",
       "    train: Dataset({\n",
       "        features: ['instruction', 'text_j', 'text_k', 'score_diff'],\n",
       "        num_rows: 76117\n",
       "    })\n",
       "    test: Dataset({\n",
       "        features: ['instruction', 'text_j', 'text_k', 'score_diff'],\n",
       "        num_rows: 19030\n",
       "    })\n",
       "})"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datasets import Dataset\n",
    "\n",
    "pairs_dataset = Dataset.from_list(new_examples)\n",
    "pairs_dataset = pairs_dataset.train_test_split(train_size=.8, seed=42)\n",
    "pairs_dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6a1c4cca",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "6a1c4cca",
    "outputId": "0fbc8076-a44e-463c-ccf3-db9797db6b7f"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'instruction': 'How did the Battle of Gettysburg change the course of the American Civil War?',\n",
       " 'text_j': 'The Battle of Gettysburg, fought from July 1 to July 3 1863, is considered one of the most important and decisive battles in the American Civil War as it marked a major turning point in the conflict. Before the battle, the Confederate army, commanded by General Robert E. Lee, had been enjoying a string of victories and launched an invasion of the Northern states, hoping that a major victory on Northern soil would demoralize the Union and force them to seek peace. However, the Union army, led by General George G. Meade, was able to successfully repel the Confederate attack in a bloody and costly battle, with an estimated 23,000 Union and 28,000 Confederate casualties.\\n\\nThe Union victory at Gettysburg, along with the capture of the Confederate stronghold of Vicksburg on July 4 1863, changed the momentum of the war in favor of the Union. The Confederate army was forced to retreat, severely weakened, and was unable to launch another major offensive operation. The battle also boosted the morale of the Union army, and President Abraham Lincoln used the victory to reframe the war as a struggle not just for the preservation of the Union, but as a fight against slavery with the issuance of the Gettysburg Address in November of that year.\\n\\nFrom a strategic standpoint, it proved to be a lost opportunity for the Confederacy, as they never again had the chance to launch a major invasion of the North. The battle also depleted much of their manpower, and losses of that scale could not be recovered. It meant that, from that point on, they were largely on the defensive, fighting to protect their own territory.\\n\\nIn summary, the Battle of Gettysburg represented a major turning point in the course of the American Civil War. It stopped the Confederate advance in the North, depleted their resources, and boosted Union morale, encouraging them to continue the fight.',\n",
       " 'text_k': 'The battle of Gettysburg changed the course of the war.',\n",
       " 'score_diff': 6.0}"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pairs_dataset['test'][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "167bffe2",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "167bffe2",
    "outputId": "082e3824-ad51-44a9-caa1-4ccba8c8556b"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of RobertaForSequenceClassification were not initialized from the model checkpoint at roberta-base and are newly initialized: ['classifier.out_proj.weight', 'classifier.dense.weight', 'classifier.out_proj.bias', 'classifier.dense.bias']\n",
      "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
     ]
    }
   ],
   "source": [
    "# Using a cross-encoder to encode question and answer together to produce a score\n",
    "#  This is an expected use-case for a cross-encoder\n",
    "\n",
    "model_name = 'roberta-base'\n",
    "tokenizer = AutoTokenizer.from_pretrained(model_name)\n",
    "# tokenizer.add_special_tokens({'pad_token': '[PAD]'})\n",
    "\n",
    "config = AutoConfig.from_pretrained(model_name)\n",
    "\n",
    "model = AutoModelForSequenceClassification.from_pretrained(\n",
    "    model_name, num_labels=1,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "578de7a9",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 81,
     "referenced_widgets": [
      "6e189679616f4624a7be424558a39268",
      "cf04af1d22b949f5a000838fccc33cb3",
      "9347a93ad6934c9ab0738d3e143803a1",
      "ef65c9c0762c4515a4f71aa5be478d50",
      "21f9d01f1ea4401bb27c918df871c9e4",
      "0ed7a3ee9e994ea79ac1cb3b6dbfa0ca",
      "9d363670cdd14db3a056988f8a7e34d1",
      "8001de104a5e4df892396e05565c1193",
      "713cf70c6acc4803aeaa61e519eec559",
      "cad9adc96ff94243a68d7a6f94a3c3ba",
      "585555dd4b2d426cbda044afd178ec9c",
      "5b9b260c5fb042be8036b40a68e83cb0",
      "36866472639e4b23bf440638c9a256c9",
      "644c8f76313b4d208897072acb69eae4",
      "89af6b2807d544cc9de0d085831c8c56",
      "48477064d2214a8b8f2db7e37756602e",
      "6e96ea30df2745388345e4077ee6486f",
      "0b822d2a9f5a42edb59130ad730493c7",
      "c32d274054c640aeb2aa3f6d46f50da1",
      "70354345925941c284814b109bc51477",
      "385cae32db0945a0b7792c95f057556a",
      "b137bd32b5064a058f321d1ae2120042"
     ]
    },
    "id": "578de7a9",
    "outputId": "ac767e3d-dbc0-4312-9825-0549345629d2"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6e189679616f4624a7be424558a39268",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Map:   0%|          | 0/76117 [00:00<?, ? examples/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5b9b260c5fb042be8036b40a68e83cb0",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Map:   0%|          | 0/19030 [00:00<?, ? examples/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Turn the dataset into pairs of input + output, where text_j is the preferred question + answer and text_k is the other.\n",
    "# Then tokenize the dataset.\n",
    "def preprocess_function(example):\n",
    "    new_examples = {\n",
    "        \"input_ids_j\": [],\n",
    "        \"attention_mask_j\": [],\n",
    "        \"input_ids_k\": [],\n",
    "        \"attention_mask_k\": [],\n",
    "        \"score_diff\": []\n",
    "    }\n",
    "\n",
    "    new_examples['score_diff'].append(example['score_diff'])\n",
    "    question = example[\"instruction\"]\n",
    "    tokenized_j = tokenizer(question, example['text_j'], truncation=True)\n",
    "    tokenized_k = tokenizer(question, example['text_k'], truncation=True)\n",
    "\n",
    "    new_examples[\"input_ids_j\"].append(tokenized_j[\"input_ids\"])\n",
    "    new_examples[\"attention_mask_j\"].append(tokenized_j[\"attention_mask\"])\n",
    "    new_examples[\"input_ids_k\"].append(tokenized_k[\"input_ids\"])\n",
    "    new_examples[\"attention_mask_k\"].append(tokenized_k[\"attention_mask\"])\n",
    "\n",
    "    return new_examples\n",
    "\n",
    "# preprocess the dataset and filter out QAs that are longer than max_length\n",
    "pairs_dataset = pairs_dataset.map(preprocess_function, batched=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d7d13dd6",
   "metadata": {
    "id": "d7d13dd6"
   },
   "outputs": [],
   "source": [
    "pairs_dataset.set_format('pt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "69dcd56a",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "69dcd56a",
    "outputId": "667ff8f6-574a-4215-fdb9-6fa3bee26073"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatasetDict({\n",
       "    train: Dataset({\n",
       "        features: ['instruction', 'text_j', 'text_k', 'score_diff', 'input_ids_j', 'attention_mask_j', 'input_ids_k', 'attention_mask_k'],\n",
       "        num_rows: 76117\n",
       "    })\n",
       "    test: Dataset({\n",
       "        features: ['instruction', 'text_j', 'text_k', 'score_diff', 'input_ids_j', 'attention_mask_j', 'input_ids_k', 'attention_mask_k'],\n",
       "        num_rows: 19030\n",
       "    })\n",
       "})"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pairs_dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "949550ae",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "949550ae",
    "outputId": "b1c26b83-0260-4e45-c968-f511aeef8bbc"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'instruction': 'Write an article about climate change.',\n",
       " 'text_j': \"Climate change is one of the most pressing and urgent issues of the modern world. It is an ever-evolving environmental threat that threatens the planet's future, especially with regards to the natural environment that we as humans depend upon. Over the decades, the scientific community has recorded a consistent and steady rise in global temperatures that can only be attributed to the increasing concentrations of Greenhouse gases in the atmosphere due to our continued burning of fossil fuels. This has sparked a chain reaction of catastrophic events that is wreaking havoc on the planet, such as extreme weather events, melting of polar ice caps and the ocean rising to unprecedented levels, threatening the future of entire cities and coastal areas.\\n\\nThe urgency of this global crisis is only compounded by the fact that climate change is happening much faster than predicted. This means that in order to maintain a livable and functioning planet, drastic measures need to be taken immediately on a global scale. Governments, industry and citizens alike will need to significantly reduce emissions and transition to renewable energy sources in order to avoid a future we cannot imagine. \\n\\nWith the technology and knowledge available to us, the task of mitigating and adapting to climate change is not insurmountable. But in order to save our planet, collective action is needed - and fast.\",\n",
       " 'text_k': \"I can't write an article about climate change.\",\n",
       " 'score_diff': tensor([5.]),\n",
       " 'input_ids_j': tensor([[    0, 45714,    41,  1566,    59,  2147,   464,     4,     2,     2,\n",
       "          40466,   464,    16,    65,     9,     5,   144, 10275,     8,  9047,\n",
       "            743,     9,     5,  2297,   232,     4,    85,    16,    41,   655,\n",
       "             12,  3623, 21241,  3039,  1856,    14, 13546,     5,  5518,    18,\n",
       "            499,     6,   941,    19, 11246,     7,     5,  1632,  1737,    14,\n",
       "             52,    25,  5868,  6723,  2115,     4,  2306,     5,  1724,     6,\n",
       "              5,  6441,   435,    34,  2673,    10,  4292,     8,  5204,  1430,\n",
       "             11,   720,  3971,    14,    64,   129,    28,  9702,     7,     5,\n",
       "           2284, 26069,     9,  1628,  3138, 20038,    11,     5,  5466,   528,\n",
       "              7,    84,  1143,  6574,     9, 11422, 12174,     4,   152,    34,\n",
       "           6246,    10,  3206,  4289,     9, 15532,  1061,    14,    16, 21679,\n",
       "           7520, 19705,    15,     5,  5518,     6,   215,    25,  5004,  1650,\n",
       "           1061,     6, 23187,     9, 13744,  2480,  9686,     8,     5,  6444,\n",
       "           2227,     7,  7071,  1389,     6,  5608,     5,   499,     9,  1445,\n",
       "           1947,     8,  8095,   911,     4, 50118, 50118,   133, 14195,     9,\n",
       "             42,   720,  1486,    16,   129, 24094,    30,     5,   754,    14,\n",
       "           2147,   464,    16,  2909,   203,  3845,    87,  6126,     4,   152,\n",
       "            839,    14,    11,   645,     7,  3014,    10, 32126,   868,     8,\n",
       "          13838,  5518,     6, 19167,  1797,   240,     7,    28,   551,  1320,\n",
       "             15,    10,   720,  3189,     4, 26581,     6,   539,     8,  2286,\n",
       "           9829,    40,   240,     7,  3625,  1888,  5035,     8,  3868,     7,\n",
       "           8741,  1007,  1715,    11,   645,     7,  1877,    10,   499,    52,\n",
       "           1395,  4744,     4,  1437, 50118, 50118,  3908,     5,   806,     8,\n",
       "           2655,   577,     7,   201,     6,     5,  3685,     9, 31904,     8,\n",
       "          26493,     7,  2147,   464,    16,    45, 36686, 17336,   868,     4,\n",
       "            125,    11,   645,     7,  1871,    84,  5518,     6,  6981,   814,\n",
       "             16,   956,   111,     8,  1769,     4,     2]]),\n",
       " 'attention_mask_j': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "          1, 1, 1]]),\n",
       " 'input_ids_k': tensor([[    0, 45714,    41,  1566,    59,  2147,   464,     4,     2,     2,\n",
       "            100,    64,    75,  3116,    41,  1566,    59,  2147,   464,     4,\n",
       "              2]]),\n",
       " 'attention_mask_k': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])}"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pairs_dataset['train'][5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "257e93c0",
   "metadata": {
    "id": "257e93c0"
   },
   "outputs": [],
   "source": [
    "# We need to define a special data collator that batches the data in our j vs k format.\n",
    "import evaluate\n",
    "\n",
    "@dataclass\n",
    "class RewardDataCollatorWithPadding:\n",
    "    tokenizer: PreTrainedTokenizerBase\n",
    "    padding: Union[bool, str, PaddingStrategy] = True\n",
    "    max_length: Optional[int] = None\n",
    "    pad_to_multiple_of: Optional[int] = None\n",
    "    return_tensors: str = \"pt\"\n",
    "\n",
    "    def __call__(self, features: List[Dict[str, Any]]) -> Dict[str, Any]:\n",
    "        features_j = []\n",
    "        features_k = []\n",
    "        for feature in features:\n",
    "            features_j.append(\n",
    "                {\n",
    "                    \"input_ids\": feature[\"input_ids_j\"].squeeze(),\n",
    "                    \"attention_mask\": feature[\"attention_mask_j\"].squeeze(),\n",
    "                }\n",
    "            )\n",
    "            features_k.append(\n",
    "                {\n",
    "                    \"input_ids\": feature[\"input_ids_k\"].squeeze(),\n",
    "                    \"attention_mask\": feature[\"attention_mask_k\"].squeeze(),\n",
    "                }\n",
    "            )\n",
    "        batch_j = self.tokenizer.pad(\n",
    "            features_j,\n",
    "            padding=self.padding,\n",
    "            max_length=self.max_length,\n",
    "            pad_to_multiple_of=self.pad_to_multiple_of,\n",
    "            return_tensors=self.return_tensors,\n",
    "        )\n",
    "        batch_k = self.tokenizer.pad(\n",
    "            features_k,\n",
    "            padding=self.padding,\n",
    "            max_length=self.max_length,\n",
    "            pad_to_multiple_of=self.pad_to_multiple_of,\n",
    "            return_tensors=self.return_tensors,\n",
    "        )\n",
    "        batch = {\n",
    "            \"input_ids_j\": batch_j[\"input_ids\"],\n",
    "            \"attention_mask_j\": batch_j[\"attention_mask\"],\n",
    "            \"input_ids_k\": batch_k[\"input_ids\"],\n",
    "            \"attention_mask_k\": batch_k[\"attention_mask\"],\n",
    "            \"score_diff\": [feature['score_diff'] for feature in features],\n",
    "            \"return_loss\": True,\n",
    "        }\n",
    "        return batch\n",
    "\n",
    "# Define the metric that we'll use for validation.\n",
    "accuracy = evaluate.load(\"accuracy\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7eBaoYk9cxhL",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 104
    },
    "id": "7eBaoYk9cxhL",
    "outputId": "6a4f8d37-259f-4e89-9165-c2c919e15eb1"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-width:800px; border: 1px solid var(--colab-border-color);\"><style>\n",
       "      pre.function-repr-contents {\n",
       "        overflow-x: auto;\n",
       "        padding: 8px 12px;\n",
       "        max-height: 500px;\n",
       "      }\n",
       "\n",
       "      pre.function-repr-contents.function-repr-contents-collapsed {\n",
       "        cursor: pointer;\n",
       "        max-height: 100px;\n",
       "      }\n",
       "    </style>\n",
       "    <pre style=\"white-space: initial; background:\n",
       "         var(--colab-secondary-surface-color); padding: 8px 12px;\n",
       "         border-bottom: 1px solid var(--colab-border-color);\"><b>RewardDataCollatorWithPadding</b><br/>def __call__(features: List[Dict[str, Any]]) -&gt; Dict[str, Any]</pre><pre class=\"function-repr-contents function-repr-contents-collapsed\" style=\"\"><a class=\"filepath\" style=\"display:none\" href=\"#\"></a>RewardDataCollatorWithPadding(tokenizer: transformers.tokenization_utils_base.PreTrainedTokenizerBase, padding: Union[bool, str, transformers.utils.generic.PaddingStrategy] = True, max_length: Optional[int] = None, pad_to_multiple_of: Optional[int] = None, return_tensors: str = &#x27;pt&#x27;)</pre></div>"
      ],
      "text/plain": [
       "__main__.RewardDataCollatorWithPadding"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RewardDataCollatorWithPadding"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5effdbd9",
   "metadata": {
    "id": "5effdbd9"
   },
   "outputs": [],
   "source": [
    "def compute_metrics(eval_pred):\n",
    "    predictions, _ = eval_pred\n",
    "    # Here, predictions is rewards_j and rewards_k.\n",
    "    # We want to see how much of the time rewards_j > rewards_k.\n",
    "    predictions = np.argmax(predictions, axis=0)\n",
    "    labels = np.zeros(predictions.shape)\n",
    "    return accuracy.compute(predictions=predictions, references=labels)\n",
    "\n",
    "# We are subclassing the Hugging Face Trainer class to customize the loss computation\n",
    "class RewardTrainer(Trainer):\n",
    "    # Overriding the compute_loss function to define how to compute the loss for our specific task\n",
    "    def compute_loss(self, model, inputs, return_outputs=False):\n",
    "        # Calculate the reward for a preferred response y_j using the model. The input IDs and attention masks for y_j are provided in inputs.\n",
    "        rewards_j = model(input_ids=inputs[\"input_ids_j\"], attention_mask=inputs[\"attention_mask_j\"])[0]\n",
    "\n",
    "        # Similarly, calculate the reward for a lesser preferred response y_k.\n",
    "        rewards_k = model(input_ids=inputs[\"input_ids_k\"], attention_mask=inputs[\"attention_mask_k\"])[0]\n",
    "\n",
    "        # Calculate the loss using the negative log-likelihood function.\n",
    "        # We take the difference of rewards (rewards_j - rewards_k) and subtract from it the score difference provided in the inputs.\n",
    "        # Then, we apply the sigmoid function (via torch.nn.functional.logsigmoid) and negate the result.\n",
    "        # The mean loss is calculated across all examples in the batch.\n",
    "\n",
    "        loss = -nn.functional.logsigmoid((rewards_j - rewards_k - torch.tensor(inputs['score_diff'], device=rewards_j.device))).mean()\n",
    "\n",
    "        # If we also want to return the outputs (rewards for y_j and y_k) along with the loss, we do so.\n",
    "        if return_outputs:\n",
    "            return loss, {\"rewards_j\": rewards_j, \"rewards_k\": rewards_k}\n",
    "\n",
    "        # Otherwise, we simply return the computed loss.\n",
    "        return loss\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e99acd95",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 144
    },
    "id": "e99acd95",
    "outputId": "200e9181-4225-44d0-ef5b-d52dd2748b7c"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mprofoz\u001b[0m. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "Tracking run with wandb version 0.16.3"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "Run data is saved locally in <code>/content/wandb/run-20240219_042008-hrfo3ryy</code>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "Syncing run <strong><a href='https://wandb.ai/profoz/sawyer-reward/runs/hrfo3ryy' target=\"_blank\">vivid-laughter-2</a></strong> to <a href='https://wandb.ai/profoz/sawyer-reward' target=\"_blank\">Weights & Biases</a> (<a href='https://wandb.me/run' target=\"_blank\">docs</a>)<br/>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       " View project at <a href='https://wandb.ai/profoz/sawyer-reward' target=\"_blank\">https://wandb.ai/profoz/sawyer-reward</a>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       " View run at <a href='https://wandb.ai/profoz/sawyer-reward/runs/hrfo3ryy' target=\"_blank\">https://wandb.ai/profoz/sawyer-reward/runs/hrfo3ryy</a>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<button onClick=\"this.nextSibling.style.display='block';this.style.display='none';\">Display W&B run</button><iframe src='https://wandb.ai/profoz/sawyer-reward/runs/hrfo3ryy?jupyter=true' style='border:none;width:100%;height:420px;display:none;'></iframe>"
      ],
      "text/plain": [
       "<wandb.sdk.wandb_run.Run at 0x7f7dce862860>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import wandb\n",
    "# Set up Weights and Biases integration\n",
    "wandb.init(project=\"sawyer-reward\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8a373a07",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 164
    },
    "id": "8a373a07",
    "outputId": "012c6ad1-20e7-411f-856f-e4e6b7575178"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "You're using a RobertaTokenizerFast tokenizer. Please note that with a fast tokenizer, using the `__call__` method is faster than using a method to encode the text followed by a call to the `pad` method to get a padded encoding.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      \n",
       "      <progress value='595' max='595' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      [595/595 03:56]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "{'eval_loss': 5.016231060028076,\n",
       " 'eval_accuracy': 0.3722017866526537,\n",
       " 'eval_runtime': 237.2827,\n",
       " 'eval_samples_per_second': 80.2,\n",
       " 'eval_steps_per_second': 2.508}"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "training_args = TrainingArguments(\n",
    "    output_dir='sawyer_rm',\n",
    "    per_device_train_batch_size=4,\n",
    "    gradient_accumulation_steps=8,\n",
    "    per_device_eval_batch_size=32,\n",
    "    num_train_epochs=3,\n",
    "\n",
    "    evaluation_strategy=\"epoch\",\n",
    "    save_strategy=\"epoch\",\n",
    "\n",
    "    remove_unused_columns=False,\n",
    "    label_names=[],\n",
    "    fp16=True if device.type == 'cuda' else False,\n",
    "    load_best_model_at_end=True,\n",
    "    logging_strategy=\"steps\",\n",
    "    logging_steps=10,\n",
    "    learning_rate=1e-6,\n",
    "    warmup_ratio=0.1,\n",
    "    push_to_hub=True,\n",
    "    hub_model_id=\"profoz/sawyer-reward\",\n",
    "    hub_strategy=\"every_save\",\n",
    ")\n",
    "\n",
    "# Train the model, woohoo.\n",
    "trainer = RewardTrainer(\n",
    "    model=model,\n",
    "    args=training_args,\n",
    "    train_dataset=pairs_dataset['train'],\n",
    "    eval_dataset=pairs_dataset['test'],\n",
    "    compute_metrics=compute_metrics,\n",
    "    data_collator=RewardDataCollatorWithPadding(\n",
    "        tokenizer=tokenizer),\n",
    ")\n",
    "\n",
    "trainer.evaluate()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5dc657fb",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 243
    },
    "id": "5dc657fb",
    "outputId": "90050aef-bb1d-40b5-a884-8f8b74c114f5"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Could not estimate the number of tokens of the input, floating-point operations will not be computed\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      \n",
       "      <progress value='7134' max='7134' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      [7134/7134 2:08:46, Epoch 2/3]\n",
       "    </div>\n",
       "    <table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       " <tr style=\"text-align: left;\">\n",
       "      <th>Epoch</th>\n",
       "      <th>Training Loss</th>\n",
       "      <th>Validation Loss</th>\n",
       "      <th>Accuracy</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.670500</td>\n",
       "      <td>0.606224</td>\n",
       "      <td>0.964530</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.389200</td>\n",
       "      <td>0.475221</td>\n",
       "      <td>0.970100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>0.418000</td>\n",
       "      <td>0.446066</td>\n",
       "      <td>0.971886</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table><p>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      \n",
       "      <progress value='1190' max='595' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      [595/595 46:35]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "TrainOutput(global_step=7134, training_loss=1.0500664492598561, metrics={'train_runtime': 7728.2912, 'train_samples_per_second': 29.547, 'train_steps_per_second': 0.923, 'total_flos': 0.0, 'train_loss': 1.0500664492598561, 'epoch': 3.0})"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainer.train()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a47b1d04",
   "metadata": {
    "id": "a47b1d04"
   },
   "outputs": [],
   "source": [
    "# !huggingface-cli login\n",
    "# !huggingface-cli repo create sawyer-reward\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "j8Rjnao_axOf",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 103,
     "referenced_widgets": [
      "0d257f182f444ee595b3c0916441eeac",
      "a801b034a553435caaa44693d4b27905",
      "160a466dfe014f489959ac0e2b10d92a",
      "a9c76aef0e7c4a6db92c55fe27b5a463",
      "440c1c237f924499b9a56d24d44b5b66",
      "aeb5525652774a5d8de483437e73b2f7",
      "815f602e2185454393e7ae1dbbd76ffc",
      "8dd5ace4915149ba9514aca486f31864",
      "5d5cab1b51ab46b6bd3569f48a16c170",
      "8c82db7d45e34fc78613f815ed4ee86e",
      "60616877a30d47bd9bb7c4220d3c6595"
     ]
    },
    "id": "j8Rjnao_axOf",
    "outputId": "5ce43511-2c82-46af-afc2-fa51104c9eb7"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0d257f182f444ee595b3c0916441eeac",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "model.safetensors:   0%|          | 0.00/499M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "CommitInfo(commit_url='https://huggingface.co/profoz/sawyer-llama-reward/commit/c524e64592ed7f4b5975fc766d9c548999a6eca3', commit_message='Upload tokenizer', commit_description='', oid='c524e64592ed7f4b5975fc766d9c548999a6eca3', pr_url=None, pr_revision=None, pr_num=None)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "username, repo_name = 'profoz', 'sawyer-llama-reward'\n",
    "\n",
    "# Push model and tokenizer to Hugging Face Hub\n",
    "trainer.model.push_to_hub(f\"{username}/{repo_name}\")\n",
    "tokenizer.push_to_hub(f\"{username}/{repo_name}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8ilDArrswJ8D",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 241,
     "referenced_widgets": [
      "cb18bbd640344aafa91a7931e40a14a1",
      "7f76df3e41fc416385cc5ca14f990b65",
      "d44ac78f2e9b473c855105e04a57146f",
      "b01575c1956d46c48cbd8c41a19db258",
      "9197dd7f181f4218918f45f7cb7b6d73",
      "0e4b3b0550c24456993f50c0a36e9e20",
      "87b00c3711134a338057c05eb196fdc3",
      "1c9cd3106c8a4e3abd08ec734a64fcf0",
      "55dcbc15b54e437aba6dd4e010c07540",
      "9ea3eda8212141adaecfdfdfde9cff1d",
      "d1180cda67b34fc99671da18423e1a8b",
      "95db8862d7b445608ac527bb8a1a781a",
      "1d71cee836a4498f853db7420f840327",
      "54b77945cc1d4b628068991fb9a9c9df",
      "322cad31614e428a898f395e88b56beb",
      "172abb38c41648cfa8f6c77a0d42f827",
      "e6debb075e594d8fb0a6538682813d19",
      "8c523985a8064187835cee3823b1b707",
      "d80f165a2c344878b50abb65bb39a262",
      "0e5b7536f27b45458b281456b6fd1269",
      "ebfdb1fd8d744c6980ac54c94dbec9fd",
      "e81216bd6bf84a14bb57f29a3d39eedb",
      "e51af6ae0c3d4976b0b0578d3b5daebd",
      "093b86e6fa934f11b1d36c128bde840c",
      "fbae5a8508f0474e9dd1d2bd0217488e",
      "b457e5a1ceb94c7782c920778fb32585",
      "8014e2e2d325439c89e25a87db6acba2",
      "affe41508514405bbab978ad39b5cf6b",
      "ea67bfb4d7bd44f8a48d2f1e36fca053",
      "a87d277602124a9bafc646172769cef5",
      "9cf18ece976443a68e1ca62ee1978de9",
      "ccc7199cac9f414896a51065d24fdca1",
      "353053b7056c4e04bb706c616d834b27",
      "7ab97885a5f34ad99b37b63787dd8f87",
      "7617e029b3ec4431ac2e3870d9c2324b",
      "5ccf56a59ec5409a88a71a86bfe82dc7",
      "d603b1a5f4764b8f93ca2a188e4eab3f",
      "7e61703c3b564d7c82566afe34406fa8",
      "936703b709d94eda90aae7dfc9a95ac6",
      "9812214d6c75420fa7d9ba7f862e9fbc",
      "6ac41961ff474a41a0cdae69e06eca8d",
      "24904ca2ec2a440a97a928abe58c5218",
      "a9c115239284433096777af1e188f8f3",
      "42dab3868ad542199cc6be8ed89057bb",
      "7578bf4213f84bc586eb9ee7261f48fe",
      "da28bb06a4f6404b9b1e0f85092a9fd0",
      "6505bfd667fa4759887caa60869695a2",
      "993f8f9c728441cbb4c53e4863c24642",
      "500d00e2914849acb44fda096696b43d",
      "cab091592f1241f3b3129405a9d780bb",
      "cbc5267ba900475cb915fe628ba577b7",
      "af97b0d8974944788a6464beeac0ab55",
      "a5186302ea2d46bc9d8e084798ce7e93",
      "f1c210a7eb90497ba1f3d5cf3cd1ae76",
      "052d6ee5b27f4331bbe9f45a6a059db4",
      "879cdfaa2c184be382236694dc7a8faf",
      "a081178b0b70426eb65639fa547fa7e3",
      "4da6bcd2dec443f4adc29272b4bb1bd5",
      "f6d8f3e096084025862ff40228e477c0",
      "140fb4a1d62d4dbaa400d19e62b1b0dd",
      "a1b8bb5cbbae4f8c9125a6d1175dce4d",
      "fe558dbc18f2478dbe9dc1e8e42b0a9a",
      "992a724651304030af0e85f778dddb0d",
      "a48206910d5b42c49f175c4a0375d7a8",
      "b8ab9ee59ff64152995e2c73aefa765a",
      "4f5852ca55214980a322f4601b7a54b9",
      "e9077dc14701411792637f687235cf76",
      "a1206d744f0c444c98acdb40126fe9fb",
      "0ba0949bffe04a9abdbecbb0057d486a",
      "a11750a887b046b49d42e31abfd02c53",
      "4f7d6b1155d7417ebd8d9474c73ecbeb",
      "ad334b7dbd7a4dd09c61fe1555de81d9",
      "ca1b2727e2b545ff9e8f28abeefb04dd",
      "6f58189530b749e59c6add26e3c03b4c",
      "1daf80d45ef94b088d590940b545dc53",
      "e76e0f70d2da4325bb8db8ec7fa66d26",
      "010a4090874245cf86f7a0944b3c2e52"
     ]
    },
    "id": "8ilDArrswJ8D",
    "outputId": "4d7f9841-ae9e-4321-d55a-e4e5fd5d7b0f"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "cb18bbd640344aafa91a7931e40a14a1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "config.json:   0%|          | 0.00/764 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "95db8862d7b445608ac527bb8a1a781a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "model.safetensors:   0%|          | 0.00/499M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e51af6ae0c3d4976b0b0578d3b5daebd",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer_config.json:   0%|          | 0.00/1.22k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7ab97885a5f34ad99b37b63787dd8f87",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "vocab.json:   0%|          | 0.00/798k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7578bf4213f84bc586eb9ee7261f48fe",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "merges.txt:   0%|          | 0.00/456k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "879cdfaa2c184be382236694dc7a8faf",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer.json:   0%|          | 0.00/2.11M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e9077dc14701411792637f687235cf76",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "special_tokens_map.json:   0%|          | 0.00/280 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Use a pipeline as a high-level helper\n",
    "from transformers import pipeline\n",
    "username, repo_name = 'profoz', 'sawyer-llama-reward'\n",
    "\n",
    "pipe = pipeline(\"text-classification\", model=f\"{username}/{repo_name}\", function_to_apply='none')\n",
    "\n",
    "def test_reward_pipeline(query, response):\n",
    "    return pipe(\n",
    "        [\n",
    "            {\n",
    "                \"text\": query,\n",
    "                \"text_pair\": response\n",
    "            }\n",
    "        ],\n",
    "    )[0]['score']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bjWRjXLGRvjV",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "bjWRjXLGRvjV",
    "outputId": "8c6fae54-16d2-40b5-93b7-47c11c6fd6e9"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-7.213021278381348"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# an example where I'd expect positive\n",
    "test_reward_pipeline(\n",
    "    'Give three tips for staying healthy.',\n",
    "    'Eat healthy, exercise, and sleep.'\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t3MPuyxymCzF",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "t3MPuyxymCzF",
    "outputId": "4db59510-402b-4ace-da84-ebf80f0184b1"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-5.177160739898682"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# an example where I'd expect positive\n",
    "test_reward_pipeline('how do I greet someone?', 'Tell them Hello!')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8e7d801f-1378-43a8-b2db-bc5e4c15a528",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "8e7d801f-1378-43a8-b2db-bc5e4c15a528",
    "outputId": "1d65f416-64e9-4c3c-d269-ab69113356c8"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.9220404624938965"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Hmm, longer seems to be more rewarded?\n",
    "test_reward_pipeline('how do I greet someone?', 'To greet someone, try telling them Hello!')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "103bae40-7e50-4995-b089-26bea65846ce",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "103bae40-7e50-4995-b089-26bea65846ce",
    "outputId": "d3080b1e-8196-49d0-88a1-ef004ff54822"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7.610815048217773"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# the more I ramble the more I seem to get rewarded. Let's keep this in mind\n",
    "test_reward_pipeline('how do I greet someone?', 'To greet someone, try telling them Hello! If you want more information, '\n",
    "                                    'here are three more ways to greet someone:\\n1. Ask how their day is\\n2. Comment on the weather\\n3. '\n",
    "                                    'Tell them they look nice today')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e4011b14",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "e4011b14",
    "outputId": "b6fe4b68-29a0-4269-930f-26a46cd613ce"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-5.161818504333496"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# another example where I'd expect negative\n",
    "test_reward_pipeline('how do I greet someone?', 'Tell them to frick off!')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "gr5zIK_hfKlR",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "gr5zIK_hfKlR",
    "outputId": "fd30e22f-0a9c-488c-fce8-ef23efd44277"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.6070520877838135"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# another example where I'd expect negative for being irrelevant\n",
    "test_reward_pipeline('Who throws the football the most often?', 'Tell them Hello!')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "Wr-kO7w93UTC",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Wr-kO7w93UTC",
    "outputId": "6b86e5db-6750-4362-f9ee-3e1b8675aae1"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-4.354253768920898"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# another example where I'd expect negative because it's irrelevant. That's why I wanted those synthetic examples in there\n",
    "test_reward_pipeline('Who throws the football the most often?', 'Football could refer to many things.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fCZRHJgpa-K5",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "fCZRHJgpa-K5",
    "outputId": "ee52273a-a699-4d59-a953-62da2105536b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-6.8216328620910645"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_reward_pipeline('What is an option in finance?', 'What even is a car?')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "pxUHkqI0fWY4",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "pxUHkqI0fWY4",
    "outputId": "96f78ecb-167f-4206-97f7-847800a9597f"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Write a list of creative holiday gift ideas for someone who already has a lot of things.\n",
      "J\n",
      "------\n",
      "1. Customized photo album or scrapbook: Fill it with personal memories and favorite moments from the past year.\n",
      "\n",
      "2. Experience gift: Treat them to a special outing or adventure, such as tickets to a concert, hot air balloon ride, or a cooking class.\n",
      "\n",
      "3. Personalized gift: Consider a monogrammed item such as a piece of jewelry, luggage tag, or mug.\n",
      "\n",
      "4. Gourmet food or drink: Indulge their taste buds with a basket of fine cheeses, artisan chocolates, or a selection of craft beers.\n",
      "\n",
      "5. Subscription service: Gift them a subscription to a monthly book, coffee, or beauty box.\n",
      "\n",
      "6. Handmade item: Give them a one-of-a-kind item such as a hand-knitted scarf, homemade bath products, or a piece of original artwork.\n",
      "\n",
      "7. Charitable donation: Make a donation in their name to a charity or cause that is close to their heart.\n",
      "\n",
      "8. Relaxation gift: Help them unwind with a gift certificate for a massage, spa day, or yoga class.\n",
      "\n",
      "9. Customized calendar: Create a personalized calendar filled with pictures of loved ones, special dates, and favorite quotes.\n",
      "\n",
      "10. Unique plant: Gift them a beautiful plant such as a bonsai tree, succulent arrangement, or exotic orchid.\n",
      "K\n",
      "-------\n",
      "I don't have a lot of money so I can't buy anyone anything.\n",
      "tensor([7.])\n"
     ]
    }
   ],
   "source": [
    "p = pairs_dataset['test'][10]\n",
    "\n",
    "print(p['instruction'])\n",
    "print('J\\n------')\n",
    "print(p['text_j'])\n",
    "print('K\\n-------')\n",
    "print(p['text_k'])\n",
    "print(p['score_diff'])\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8Vmbo22lvp8M",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "8Vmbo22lvp8M",
    "outputId": "185fc246-36a3-4b47-8076-a9b64dfb8e51"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7.738592147827148"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_reward_pipeline(p['instruction'], p['text_j'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "hUBuqC0AwJSf",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "hUBuqC0AwJSf",
    "outputId": "a60aff93-28b6-44cb-f5a4-76e87883a3be"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-7.501391410827637"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_reward_pipeline(p['instruction'], p['text_k'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "T7yHeLddZUeE",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 588
    },
    "id": "T7yHeLddZUeE",
    "outputId": "aff5c774-b0be-4559-b24b-fbe6257f69c9"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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U5aPiIiIvO5utv1bgwGjPerz+KiCjV27dqlv3765Xu+9TCaTVq5c+cjbeVDR0dEymUy6cuVKutfyIrjLqD9hYWEKDQ01tB8AAACPg127dmnu3LmqUqVKluXefvttzZ07Vx9++KGOHDmil19+We3bt9fevXstZbZs2aIBAwboxx9/1MaNG5WcnKwWLVroxo0bj/owANnmdQfwz+ft7a2zZ89ank+dOlWRkZHatGmTZVuBAgUeeT+Sk5OVP3/+R94Octfjdt08PDzyugsAAABAphISEtStWzd99tlnmjhxYpZlFy5cqLfeekutWrWSJL3yyivatGmTpk2bpi+//FKS0o2cioiIkKenp3bv3q1GjRo9moMA/g8jpfDQbGxsVKxYMcvDxcVFtra2lucFCxbUiBEj5OnpKQcHBzVo0EC7du3Kss6zZ8+qdevWcnR0VOnSpbV48eJ0ozNMJpPmzJmjZ555Rs7OznrnnXckSatWrVJAQIAcHBxUpkwZjRs3Trdv37bsd+XKFb300kvy8PCQm5ubmjRpov3790u68wE8btw47d+//76jvKKjo1W7dm05OzvL3d1d9evX16+//mp5fc6cOSpbtqzs7Ozk5+enhQsXWu1vMpk0d+5ctWnTRk5OTvL399eOHTt0/PhxBQUFydnZWfXq1VN8fLzVfvc7vtOnT6tt27ZycXGRm5ubOnfurHPnzlleTxvBtHDhQvn4+KhAgQLq2rWrrl+/bimTmpqqyZMnq3Tp0nJ0dFTVqlW1bNmyLK/Z3bI6j/det4kTJ6pcuXKaOnWqVR379u2TyWTS8ePH09UfFham+fPna9WqVZb6o6OjJUlnzpxR586d5e7urkKFCqlt27Y6depUtvue0X02b948tW/fXk5OTvL19dXq1aut9lm9erV8fX3l4OCgxo0ba/78+ZmOMkprQ5Lat28vk8lkeZ7mYa5N2oii77//XtWrV5ejo6OaNGmi8+fPa/369fL395ebm5uef/55JSYmZvu8ZCWr91R2JCUladCgQTn6jAAAAPivGjBggFq3bq1mzZrdt2xSUpIcHBystjk6Omr79u2Z7nP16lVJUqFChR6uo0A2EErhkRs+fLiWL1+u+fPna8+ePSpXrpyCg4N16dKlTPfp3r27/vjjD0VHR2v58uX69NNPdf78+XTlwsLC1L59ex08eFC9evXStm3b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DaZOnfraCSkiIiIiImp6OHyPiP61srOzoa+vjz179uDHH38UhrJR07du3TpYWFjAwMAAixYtknc4RERERET0BnD4HhERvRM4fI+I3mYcvkdERPXxtgzfY08pIiIiIiIiIiKSOSaliIiIiIiIiIhI5piUIiIiIiIiIiIimWNSioiIiIiIiIiIZI5JKSIiIiIiIiIikjkmpYiIiIiIiIiISOaYlCIiIiIiIiIiIpljUoqIiIiIiIiIiGSOSSkiIiIiIiIiIpI5JqWIiIiIiIiIiEjmmJQiIiIiIiIiIiKZY1KKiIiIiIiIiIhkjkkpIiIiIiIiIiKSOSaliIiIiIiIiIhI5pTkHQAREREREdUspHuIvEMgIiJqdOwpRUREREREREREMsekFBERERERERERyRyTUkREREREREREJHNMShERERERERERkcwxKUVERERERERERDLHpBQREREREREREckck1JERERERERERCRzTEoREREREREREZHMMSlFREREREREREQyx6QUERERERERERHJHJNSREREREREREQkc0xKERERERERERGRzDEpRUREREREREREMsekFBERERERERERyRyTUkREREREREREJHNMShERERERERERkcwxKUVERERERERERDLHpBQREREREREREckck1JERERERERERCRzTEoREREREREREZHMMSlFREREREREREQypyTvAIiIiGShrKwMAPDs2TM5R0JERERE9O9W8Td3xd/g1WFSioiI3gnPnz8HABgZGck5EiIiIiKid8Pz58/RokWLateLympLWxEREf0LSCQS3L9/H5qamhCJRPIO553y7NkzGBkZ4e7du9DS0pJ3OPQKtk/TxzZq2tg+TR/bqGlj+zR9DWmjsrIyPH/+HK1bt4aCQvUzR7GnFBERvRMUFBTQtm1beYfxTtPS0uIfm00Y26fpYxs1bWyfpo9t1LSxfZq++rZRTT2kKnCicyIiIiIiIiIikjkmpYiIiIiIiIiISOaYlCIiIqI3SkVFBcuWLYOKioq8Q6EqsH2aPrZR08b2afrYRk0b26fpe5NtxInOiYiIiIiIiIhI5thTioiIiIiIiIiIZI5JKSIiIiIiIiIikjkmpYiIiIiIiIiISOaYlCIiIiKZKyoqgp2dHUQiES5fvizvcAhAVlYWJk6cCFNTU6iqqqJ9+/ZY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\n",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot each value as a separate bar and label them with the corresponding text\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# Define the values and labels from the screenshot\n",
    "values = [-5.161818504333496, -5.177160739989682, 4.9220404624938965, 7.610815048217773][::-1]\n",
    "labels = [\n",
    "    \"'Tell them to frick off!'\",\n",
    "    \"'Tell them Hello!'\",\n",
    "    \"'To greet someone, try telling them Hello!'\",\n",
    "    \"'To greet someone, try telling them Hello! \"\n",
    "    \"If you want more information, here are three more ways to greet someone:\\n\"\n",
    "    \"1. Ask how their day is\\n2. Comment on the weather\\n3. Tell them they look nice today'\"\n",
    "][::-1]\n",
    "# Wrap the text for each label so it does not extend too far horizontally\n",
    "\n",
    "# Define a function to wrap text\n",
    "def wrap_text(text, width):\n",
    "    \"\"\"\n",
    "    A simple function to wrap text to a specified width.\n",
    "    \"\"\"\n",
    "    from textwrap import wrap\n",
    "    return '\\n'.join(wrap(text, width))\n",
    "\n",
    "# Apply text wrapping to each label\n",
    "wrapped_labels = [wrap_text(label, 60) for label in labels]\n",
    "\n",
    "# Re-create the figure with wrapped text labels\n",
    "fig, ax = plt.subplots(figsize=(12, 6))\n",
    "\n",
    "# Plot the values\n",
    "colors = ['#ffcccc', '#ffcccc', '#ccffcc', '#66cc66'][::-1]  # light red, light green, darker green\n",
    "\n",
    "bars = ax.barh(range(len(values)), values, color=colors)\n",
    "\n",
    "# Set the labels for each bar with wrapped text\n",
    "ax.set_yticks(range(len(values)))\n",
    "ax.set_yticklabels(wrapped_labels)\n",
    "\n",
    "# Set the x-axis label\n",
    "ax.set_xlabel('Reward')\n",
    "\n",
    "# Set the title of the plot\n",
    "ax.set_title('Sample Rewards to \"How do I greet someone?')\n",
    "\n",
    "# Add the text labels next to the bars\n",
    "for bar, v in zip(bars, values):\n",
    "    ax.text(bar.get_width(), bar.get_y() + bar.get_height()/2, str(round(v, 2)),\n",
    "            va='center', ha='left')\n",
    "\n",
    "# Adjust the layout\n",
    "plt.tight_layout()\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "DoKbsuNRZU-c",
   "metadata": {
    "id": "DoKbsuNRZU-c"
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "machine_shape": "hm",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "010a4090874245cf86f7a0944b3c2e52": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "052d6ee5b27f4331bbe9f45a6a059db4": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "093b86e6fa934f11b1d36c128bde840c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_affe41508514405bbab978ad39b5cf6b",
      "placeholder": "​",
      "style": "IPY_MODEL_ea67bfb4d7bd44f8a48d2f1e36fca053",
      "value": "tokenizer_config.json: 100%"
     }
    },
    "0b822d2a9f5a42edb59130ad730493c7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "0ba0949bffe04a9abdbecbb0057d486a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_6f58189530b749e59c6add26e3c03b4c",
      "max": 280,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_1daf80d45ef94b088d590940b545dc53",
      "value": 280
     }
    },
    "0d257f182f444ee595b3c0916441eeac": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a801b034a553435caaa44693d4b27905",
       "IPY_MODEL_160a466dfe014f489959ac0e2b10d92a",
       "IPY_MODEL_a9c76aef0e7c4a6db92c55fe27b5a463"
      ],
      "layout": "IPY_MODEL_440c1c237f924499b9a56d24d44b5b66"
     }
    },
    "0e4b3b0550c24456993f50c0a36e9e20": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0e5b7536f27b45458b281456b6fd1269": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "0ed7a3ee9e994ea79ac1cb3b6dbfa0ca": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "140fb4a1d62d4dbaa400d19e62b1b0dd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "160a466dfe014f489959ac0e2b10d92a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_8dd5ace4915149ba9514aca486f31864",
      "max": 498609748,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_5d5cab1b51ab46b6bd3569f48a16c170",
      "value": 498609748
     }
    },
    "172abb38c41648cfa8f6c77a0d42f827": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1c9cd3106c8a4e3abd08ec734a64fcf0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1d71cee836a4498f853db7420f840327": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e6debb075e594d8fb0a6538682813d19",
      "placeholder": "​",
      "style": "IPY_MODEL_8c523985a8064187835cee3823b1b707",
      "value": "model.safetensors: 100%"
     }
    },
    "1daf80d45ef94b088d590940b545dc53": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "21f9d01f1ea4401bb27c918df871c9e4": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "24904ca2ec2a440a97a928abe58c5218": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "322cad31614e428a898f395e88b56beb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ebfdb1fd8d744c6980ac54c94dbec9fd",
      "placeholder": "​",
      "style": "IPY_MODEL_e81216bd6bf84a14bb57f29a3d39eedb",
      "value": " 499M/499M [00:19&lt;00:00, 24.1MB/s]"
     }
    },
    "353053b7056c4e04bb706c616d834b27": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "36866472639e4b23bf440638c9a256c9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_6e96ea30df2745388345e4077ee6486f",
      "placeholder": "​",
      "style": "IPY_MODEL_0b822d2a9f5a42edb59130ad730493c7",
      "value": "Map: 100%"
     }
    },
    "385cae32db0945a0b7792c95f057556a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "42dab3868ad542199cc6be8ed89057bb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "440c1c237f924499b9a56d24d44b5b66": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "48477064d2214a8b8f2db7e37756602e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4da6bcd2dec443f4adc29272b4bb1bd5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_992a724651304030af0e85f778dddb0d",
      "max": 2108713,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_a48206910d5b42c49f175c4a0375d7a8",
      "value": 2108713
     }
    },
    "4f5852ca55214980a322f4601b7a54b9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "4f7d6b1155d7417ebd8d9474c73ecbeb": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "500d00e2914849acb44fda096696b43d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "54b77945cc1d4b628068991fb9a9c9df": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_d80f165a2c344878b50abb65bb39a262",
      "max": 498609748,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_0e5b7536f27b45458b281456b6fd1269",
      "value": 498609748
     }
    },
    "55dcbc15b54e437aba6dd4e010c07540": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "585555dd4b2d426cbda044afd178ec9c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "5b9b260c5fb042be8036b40a68e83cb0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_36866472639e4b23bf440638c9a256c9",
       "IPY_MODEL_644c8f76313b4d208897072acb69eae4",
       "IPY_MODEL_89af6b2807d544cc9de0d085831c8c56"
      ],
      "layout": "IPY_MODEL_48477064d2214a8b8f2db7e37756602e"
     }
    },
    "5ccf56a59ec5409a88a71a86bfe82dc7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_6ac41961ff474a41a0cdae69e06eca8d",
      "max": 798293,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_24904ca2ec2a440a97a928abe58c5218",
      "value": 798293
     }
    },
    "5d5cab1b51ab46b6bd3569f48a16c170": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "60616877a30d47bd9bb7c4220d3c6595": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "644c8f76313b4d208897072acb69eae4": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c32d274054c640aeb2aa3f6d46f50da1",
      "max": 19030,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_70354345925941c284814b109bc51477",
      "value": 19030
     }
    },
    "6505bfd667fa4759887caa60869695a2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_af97b0d8974944788a6464beeac0ab55",
      "max": 456318,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_a5186302ea2d46bc9d8e084798ce7e93",
      "value": 456318
     }
    },
    "6ac41961ff474a41a0cdae69e06eca8d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6e189679616f4624a7be424558a39268": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_cf04af1d22b949f5a000838fccc33cb3",
       "IPY_MODEL_9347a93ad6934c9ab0738d3e143803a1",
       "IPY_MODEL_ef65c9c0762c4515a4f71aa5be478d50"
      ],
      "layout": "IPY_MODEL_21f9d01f1ea4401bb27c918df871c9e4"
     }
    },
    "6e96ea30df2745388345e4077ee6486f": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6f58189530b749e59c6add26e3c03b4c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "70354345925941c284814b109bc51477": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "713cf70c6acc4803aeaa61e519eec559": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "7578bf4213f84bc586eb9ee7261f48fe": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_da28bb06a4f6404b9b1e0f85092a9fd0",
       "IPY_MODEL_6505bfd667fa4759887caa60869695a2",
       "IPY_MODEL_993f8f9c728441cbb4c53e4863c24642"
      ],
      "layout": "IPY_MODEL_500d00e2914849acb44fda096696b43d"
     }
    },
    "7617e029b3ec4431ac2e3870d9c2324b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_936703b709d94eda90aae7dfc9a95ac6",
      "placeholder": "​",
      "style": "IPY_MODEL_9812214d6c75420fa7d9ba7f862e9fbc",
      "value": "vocab.json: 100%"
     }
    },
    "7ab97885a5f34ad99b37b63787dd8f87": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_7617e029b3ec4431ac2e3870d9c2324b",
       "IPY_MODEL_5ccf56a59ec5409a88a71a86bfe82dc7",
       "IPY_MODEL_d603b1a5f4764b8f93ca2a188e4eab3f"
      ],
      "layout": "IPY_MODEL_7e61703c3b564d7c82566afe34406fa8"
     }
    },
    "7e61703c3b564d7c82566afe34406fa8": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7f76df3e41fc416385cc5ca14f990b65": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_0e4b3b0550c24456993f50c0a36e9e20",
      "placeholder": "​",
      "style": "IPY_MODEL_87b00c3711134a338057c05eb196fdc3",
      "value": "config.json: 100%"
     }
    },
    "8001de104a5e4df892396e05565c1193": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "8014e2e2d325439c89e25a87db6acba2": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "815f602e2185454393e7ae1dbbd76ffc": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "879cdfaa2c184be382236694dc7a8faf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a081178b0b70426eb65639fa547fa7e3",
       "IPY_MODEL_4da6bcd2dec443f4adc29272b4bb1bd5",
       "IPY_MODEL_f6d8f3e096084025862ff40228e477c0"
      ],
      "layout": "IPY_MODEL_140fb4a1d62d4dbaa400d19e62b1b0dd"
     }
    },
    "87b00c3711134a338057c05eb196fdc3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "89af6b2807d544cc9de0d085831c8c56": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_385cae32db0945a0b7792c95f057556a",
      "placeholder": "​",
      "style": "IPY_MODEL_b137bd32b5064a058f321d1ae2120042",
      "value": " 19030/19030 [00:17&lt;00:00, 1001.76 examples/s]"
     }
    },
    "8c523985a8064187835cee3823b1b707": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "8c82db7d45e34fc78613f815ed4ee86e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "8dd5ace4915149ba9514aca486f31864": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "9197dd7f181f4218918f45f7cb7b6d73": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "9347a93ad6934c9ab0738d3e143803a1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_8001de104a5e4df892396e05565c1193",
      "max": 76117,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_713cf70c6acc4803aeaa61e519eec559",
      "value": 76117
     }
    },
    "936703b709d94eda90aae7dfc9a95ac6": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "95db8862d7b445608ac527bb8a1a781a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_1d71cee836a4498f853db7420f840327",
       "IPY_MODEL_54b77945cc1d4b628068991fb9a9c9df",
       "IPY_MODEL_322cad31614e428a898f395e88b56beb"
      ],
      "layout": "IPY_MODEL_172abb38c41648cfa8f6c77a0d42f827"
     }
    },
    "9812214d6c75420fa7d9ba7f862e9fbc": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "992a724651304030af0e85f778dddb0d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "993f8f9c728441cbb4c53e4863c24642": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_f1c210a7eb90497ba1f3d5cf3cd1ae76",
      "placeholder": "​",
      "style": "IPY_MODEL_052d6ee5b27f4331bbe9f45a6a059db4",
      "value": " 456k/456k [00:00&lt;00:00, 762kB/s]"
     }
    },
    "9cf18ece976443a68e1ca62ee1978de9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "9d363670cdd14db3a056988f8a7e34d1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "9ea3eda8212141adaecfdfdfde9cff1d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a081178b0b70426eb65639fa547fa7e3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a1b8bb5cbbae4f8c9125a6d1175dce4d",
      "placeholder": "​",
      "style": "IPY_MODEL_fe558dbc18f2478dbe9dc1e8e42b0a9a",
      "value": "tokenizer.json: 100%"
     }
    },
    "a11750a887b046b49d42e31abfd02c53": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e76e0f70d2da4325bb8db8ec7fa66d26",
      "placeholder": "​",
      "style": "IPY_MODEL_010a4090874245cf86f7a0944b3c2e52",
      "value": " 280/280 [00:00&lt;00:00, 21.5kB/s]"
     }
    },
    "a1206d744f0c444c98acdb40126fe9fb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ad334b7dbd7a4dd09c61fe1555de81d9",
      "placeholder": "​",
      "style": "IPY_MODEL_ca1b2727e2b545ff9e8f28abeefb04dd",
      "value": "special_tokens_map.json: 100%"
     }
    },
    "a1b8bb5cbbae4f8c9125a6d1175dce4d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a48206910d5b42c49f175c4a0375d7a8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a5186302ea2d46bc9d8e084798ce7e93": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a801b034a553435caaa44693d4b27905": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_aeb5525652774a5d8de483437e73b2f7",
      "placeholder": "​",
      "style": "IPY_MODEL_815f602e2185454393e7ae1dbbd76ffc",
      "value": "model.safetensors: 100%"
     }
    },
    "a87d277602124a9bafc646172769cef5": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a9c115239284433096777af1e188f8f3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a9c76aef0e7c4a6db92c55fe27b5a463": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_8c82db7d45e34fc78613f815ed4ee86e",
      "placeholder": "​",
      "style": "IPY_MODEL_60616877a30d47bd9bb7c4220d3c6595",
      "value": " 499M/499M [00:36&lt;00:00, 19.5MB/s]"
     }
    },
    "ad334b7dbd7a4dd09c61fe1555de81d9": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "aeb5525652774a5d8de483437e73b2f7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "af97b0d8974944788a6464beeac0ab55": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "affe41508514405bbab978ad39b5cf6b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b01575c1956d46c48cbd8c41a19db258": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9ea3eda8212141adaecfdfdfde9cff1d",
      "placeholder": "​",
      "style": "IPY_MODEL_d1180cda67b34fc99671da18423e1a8b",
      "value": " 764/764 [00:00&lt;00:00, 69.6kB/s]"
     }
    },
    "b137bd32b5064a058f321d1ae2120042": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "b457e5a1ceb94c7782c920778fb32585": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ccc7199cac9f414896a51065d24fdca1",
      "placeholder": "​",
      "style": "IPY_MODEL_353053b7056c4e04bb706c616d834b27",
      "value": " 1.22k/1.22k [00:00&lt;00:00, 106kB/s]"
     }
    },
    "b8ab9ee59ff64152995e2c73aefa765a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c32d274054c640aeb2aa3f6d46f50da1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ca1b2727e2b545ff9e8f28abeefb04dd": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "cab091592f1241f3b3129405a9d780bb": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "cad9adc96ff94243a68d7a6f94a3c3ba": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "cb18bbd640344aafa91a7931e40a14a1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_7f76df3e41fc416385cc5ca14f990b65",
       "IPY_MODEL_d44ac78f2e9b473c855105e04a57146f",
       "IPY_MODEL_b01575c1956d46c48cbd8c41a19db258"
      ],
      "layout": "IPY_MODEL_9197dd7f181f4218918f45f7cb7b6d73"
     }
    },
    "cbc5267ba900475cb915fe628ba577b7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "ccc7199cac9f414896a51065d24fdca1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "cf04af1d22b949f5a000838fccc33cb3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_0ed7a3ee9e994ea79ac1cb3b6dbfa0ca",
      "placeholder": "​",
      "style": "IPY_MODEL_9d363670cdd14db3a056988f8a7e34d1",
      "value": "Map: 100%"
     }
    },
    "d1180cda67b34fc99671da18423e1a8b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "d44ac78f2e9b473c855105e04a57146f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_1c9cd3106c8a4e3abd08ec734a64fcf0",
      "max": 764,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_55dcbc15b54e437aba6dd4e010c07540",
      "value": 764
     }
    },
    "d603b1a5f4764b8f93ca2a188e4eab3f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a9c115239284433096777af1e188f8f3",
      "placeholder": "​",
      "style": "IPY_MODEL_42dab3868ad542199cc6be8ed89057bb",
      "value": " 798k/798k [00:00&lt;00:00, 1.00MB/s]"
     }
    },
    "d80f165a2c344878b50abb65bb39a262": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "da28bb06a4f6404b9b1e0f85092a9fd0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_cab091592f1241f3b3129405a9d780bb",
      "placeholder": "​",
      "style": "IPY_MODEL_cbc5267ba900475cb915fe628ba577b7",
      "value": "merges.txt: 100%"
     }
    },
    "e51af6ae0c3d4976b0b0578d3b5daebd": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_093b86e6fa934f11b1d36c128bde840c",
       "IPY_MODEL_fbae5a8508f0474e9dd1d2bd0217488e",
       "IPY_MODEL_b457e5a1ceb94c7782c920778fb32585"
      ],
      "layout": "IPY_MODEL_8014e2e2d325439c89e25a87db6acba2"
     }
    },
    "e6debb075e594d8fb0a6538682813d19": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e76e0f70d2da4325bb8db8ec7fa66d26": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e81216bd6bf84a14bb57f29a3d39eedb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "e9077dc14701411792637f687235cf76": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a1206d744f0c444c98acdb40126fe9fb",
       "IPY_MODEL_0ba0949bffe04a9abdbecbb0057d486a",
       "IPY_MODEL_a11750a887b046b49d42e31abfd02c53"
      ],
      "layout": "IPY_MODEL_4f7d6b1155d7417ebd8d9474c73ecbeb"
     }
    },
    "ea67bfb4d7bd44f8a48d2f1e36fca053": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "ebfdb1fd8d744c6980ac54c94dbec9fd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ef65c9c0762c4515a4f71aa5be478d50": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_cad9adc96ff94243a68d7a6f94a3c3ba",
      "placeholder": "​",
      "style": "IPY_MODEL_585555dd4b2d426cbda044afd178ec9c",
      "value": " 76117/76117 [01:10&lt;00:00, 776.72 examples/s]"
     }
    },
    "f1c210a7eb90497ba1f3d5cf3cd1ae76": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "f6d8f3e096084025862ff40228e477c0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_b8ab9ee59ff64152995e2c73aefa765a",
      "placeholder": "​",
      "style": "IPY_MODEL_4f5852ca55214980a322f4601b7a54b9",
      "value": " 2.11M/2.11M [00:01&lt;00:00, 2.10MB/s]"
     }
    },
    "fbae5a8508f0474e9dd1d2bd0217488e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a87d277602124a9bafc646172769cef5",
      "max": 1215,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_9cf18ece976443a68e1ca62ee1978de9",
      "value": 1215
     }
    },
    "fe558dbc18f2478dbe9dc1e8e42b0a9a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
